Applications often generate messages that are intended to be communicated to end users. In order to successfully deliver the messages, however, applications must determine how and where to deliver the message and then subsequently execute the delivery of the message to the end user's device. Consequently, substantial processing overhead is required to manage the delivery of messages to end users.